#include<iostream>
#include <string>

using namespace std;

class MyStack;

class listNode {
    friend class MyStack;
private:
    listNode* next;
    int data;
public:
    listNode();
    ~listNode();
    listNode(int nodeData, listNode* succ = NULL);
};

class MyStack
{
    //private:
        //listNode* topNode;
        //int stackSize;


public:
    listNode* topNode;
    int stackSize;
    MyStack();
    ~MyStack();

    bool push(const int&);
    bool pop(int&);
    bool getTop(int&);
    void printStack();
};

class MyQueue
{
private:
    int* queue;
    int capacity;
    int front;
    int rear;
    int count;

public:
    MyQueue();
    MyQueue(const int&);
    ~MyQueue();

    bool isFull();
    bool isEmpty();
    bool enQueue(const int&);
    bool deQueue(int&);
    bool getFront(int&);
    void printQueue();
};

int prio(char);
int cal(int, char, int);
bool hasRepeat(string);
bool isEqual(string);
bool hasOtherOpr(string);
bool postfixExpression(const string&, string&);
bool expressionVal(const string&, int&);

int YH(int, int);
void yanghui(const int&);



